An operating system comprises software, including programs and data, that runs on a computer to manage the computer's resources, and to provide services used during execution of application programs on the computer. Many conventional operating systems also provide a computer with the capability to communicate with one or more other devices via a network. For example, many conventional operating systems support one or more networking protocols (e.g., the Transport Control Protocol/Internet Protocol, or TCP/IP, protocol) through implementation of a “network stack.” Many operating systems also implement interfaces defining how various protocols make use of transport hardware (e.g., a network interface controller, or NIC). For example, certain of the WINDOWS® family of operating systems offered by Microsoft Corporation of Redmond, Wash. implement the Network Driver Interface Specification, or NDIS, to manage how transport protocol software employs NIC hardware.
This interface is illustrated conceptually in FIG. 1. In system 100 shown in FIG. 1, NIC 105 comprises a hardware component that connects a computer to network 130. Driver 110 enables operating system 115, which implements networking stack 125 and interface 120, to employ the functionality provided by NIC 105. As operating system 115 and driver 110 are commonly provided by separate entities (e.g., driver 110 may be made available by the same entity that makes available NIC 105), interface 120 enables networking stack 125 to employ driver 110 to manage the functions provided by NIC 105.
Virtualization is a technique through which one or more physical components of a computer is abstracted into virtual components. For example, virtualization may involve the creation of one or more “virtual machines” on a physical “host” computer. Each virtual machine may perform like a physical computer, such as by executing an operating system. For example, a host computer that executes a first operating system may have running thereon a first virtual machine that executes a second operating system and a second virtual machine that executes a third operating system. One feature of virtualization that makes it attractive for users is that each virtual machine on a computer is isolated from the computer's physical components and other virtual machines. For example, software executed by a virtual machine is separated from the underlying hardware components of the physical computer that perform the execution. The ability to isolate one virtual machine from all other virtual machines on the computer can be useful with computers that employ networking. For example, if a computer is used as a web server, an administrator may find it useful to establish a virtual machine dedicated to responding to web requests originating from a particular group of users.